package cn.yuanqiao.archive.management.service;

import cn.yuanqiao.archive.management.domain.YqZpgz;
import cn.yuanqiao.archive.management.domain.YqZpjl;
import cn.yuanqiao.archive.management.domain.YqZpmx;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
import java.util.Map;

/**
 * 组盘规则Service接口
 * 
 * @author sy
 * @date 2023-07-10
 */
public interface IYqZpgzService 
{
    /**
     * 查询组盘规则
     * 
     * @param zpgzId 组盘规则主键
     * @return 组盘规则
     */
    public YqZpgz selectYqZpgzByZpgzId(Long zpgzId);

    /**
     * 查询组盘规则，根据盘规格ID
     *
     * @param pggId 盘规格ID
     * @return 组盘规则
     */
    public YqZpgz selectYqZpgzByPggId(Long pggId);

    /**
     * 查询组盘规则列表
     * 
     * @param yqZpgz 组盘规则
     * @return 组盘规则集合
     */
    public List<YqZpgz> selectYqZpgzList(YqZpgz yqZpgz);

    /**
     * 新增组盘规则
     * 
     * @param yqZpgz 组盘规则
     * @return 结果
     */
    public String insertYqZpgz(YqZpgz yqZpgz);

    /**
     * 修改组盘规则
     * 
     * @param yqZpgz 组盘规则
     * @return 结果
     */
    public String updateYqZpgz(YqZpgz yqZpgz);

    /**
     * 批量删除组盘规则
     * 
     * @param zpgzIds 需要删除的组盘规则主键集合
     * @return 结果
     */
    public String deleteYqZpgzByZpgzIds(Long[] zpgzIds);

    /**
     * 删除组盘规则信息
     * 
     * @param zpgzId 组盘规则主键
     * @return 结果
     */
    public int deleteYqZpgzByZpgzId(Long zpgzId);

    /**
     * 按照组盘规则查询信息
     *
     * @param yqZpgz 组盘规则
     * @return 结果
     */
    public List<Map<YqZpjl,List<YqZpmx>>> plan(HttpServletRequest request, YqZpgz yqZpgz);

    /**
     * 新增组盘记录
     *
     * @param zpgzId 组盘规则ID
     * @return 结果
     */
    public String insertYqZpjl(HttpServletRequest request, Long zpgzId);

    /**
     * 组盘下载
     *
     * @param zpgzId 组盘规则ID
     * @return 结果
     */
    public String zupan(HttpServletResponse response, Long zpgzId, Long ztId) throws IOException;

    /**
     * 批量删除组盘记录
     *
     * @param zpgzId 需要删除的组盘记录主键集合
     * @return 结果
     */
    public String deleteYqZpjlByZpjlIds(HttpServletRequest request,Long zpgzId);

    public String complete(Long[] zpjlIds);
}
